[レポート][株式会社Flatt Security]設定ミスによる情報漏洩だけじゃない。S3等のオブジェクトストレージの脅威を包括的に理解する - CODE BLUE 2024 #codeblue_jp
こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。
今回はCODE BLUE 2024で行われた以下のセッションのレポートです。
[株式会社Flatt Security]設定ミスによる情報漏洩だけじゃない。S3等のオブジェクトストレージの脅威を包括的に理解する
Amazon S3等のオブジェクトストレージに関連する多くの設定ミスはツールなどで機械的に発見可能であり、広く知られた脆弱性です。 しかし、あまり知られていない脆弱性も存在しています。例えば、サービス利用料金を膨大にするようなEDoSやオブジェクトのメタデータを書き換えることにより発生するXSS等が挙げられます。これらの脆弱性はアプリケーションの文脈を考慮しなければ発見することが難しく、機械的に見つけ出すことは現時点では難しいセキュリティの課題です。そして、今現在もオブジェクトストレージの課金体系やメタデータの仕様に起因したそれらの脆弱性はあまり認知されていない状況が続いています。 本講演では、オブジェクトストレージの脅威を包括的に紹介し、特に機械的に発見することが難しい脆弱性の影響や対策にフォーカスします。株式会社Flatt Securityでモダンなアプリケーションに対する診断に多数従事したエンジニアがコードを交えて具体的にその脅威・対策を示します。
Speakers:
Eiji Mori(森 瑛司) セキュリティエンジニア
Norihide Saito(齋藤 徳秀) セキュリティエンジニア
レポート
- 自己紹介
- 斎藤さん
- azaraさん
- 普段はWebアプリケーションの脆弱性診断などを行なっている
- 森さん
- Webアプリケーションの診断等を行なっている
- 斎藤さん
- S3の脆弱性
- ツールで検知出来るものもあるが、出来ない脆弱性もある
- EDoS
- メタデータを利用したXSS
- ツールで検知出来るものもあるが、出来ない脆弱性もある
- S3とは
- AWSが提供するオブジェクトストレージサービス
- 画像、ビデオ、静的サイトの配信など
- サーバーレスアプリケーションの構成の中で、ストレージとして利用されることが多い
- S3の脅威
- ツールで検知可能なもの
- S3のパブリックアクセス許可の不備
- ACL
- バケットポリシー
- Principalがワイルドカードで指定されていると第三者が操作出来てしまう
- 書き込み権限の不備
- 同様に書き込み対象の指定が甘いと誰でも操作が出来てしまう
- S3のパブリックアクセス許可の不備
- 手動診断で検知可能なもの
- EDoS
- 取得データ総量や通信量によってS3では従量課金が発生する
- 保管量
- アップロードの通信量
- ダウンロードの通信量
- その従量課金制度を悪用し、S3の所有者に経済的なダメージを与える攻撃
- 例えば攻撃者は500GBのファイルをアップロードすれば、所有者は毎月大きな課金が発生してしまう
- 150TBのファイルをダウンロードされると、約170万円かかってしまう
- 対策
- アップロード時にPre-Signed URLを使う
- S3へのアップロード時のトリガーを使い、サイズ検証を行う(保管させない)
- 大きなファイルを配信する場合はCDNでファイルをキャッシュする
- ファイルのダウンロード回数に制限をかける
- アプリの使い勝手を損なわない程度に攻撃の難易度を上げる
- 取得データ総量や通信量によってS3では従量課金が発生する
- EDoS
- ツールで検知可能なもの
- どのように攻撃を成功させるのか?
- メタデータを変更する
- メタデータとは
- オブジェクトは以下からなる
- バイナリデータ: オブジェクトの中身
- メタデータ: オブジェクトの形式等の情報
- オブジェクトは以下からなる
- S3へのアップロード方法
- SDKを利用したアップロード
- Pre-Signed URLでのアップロード
- post policy アップロード
- Content-Typeの変更によるXSS
- ファイル形式
- RFC9110
- https://www.rfc-editor.org/rfc/rfc9110.html
- Content-Typeの中にセミコロンが含まれる
- セミコロンが含まれる場合、セミコロンの前にあるものが優先
- カンマが含まれるものもある
- カンマの場合、カンマの後ろにあるものが優先される
- この差異を使って脆弱性を突いていく
- 実際に見つけたのはCarrierWaveというgem
- https://github.com/carrierwaveuploader/carrierwave
- Content-Typeの検証が甘かった
- 対策として、実際のファイル形式も検証する必要がある
感想
私は先日のSecurity-JAWSのCTFイベントにも参加していたため、復習も兼ねて楽しめたセッションでした。
本レポートで興味を持たれた方は、是非azaraさんが執筆された以下の記事もご参照ください。
今回のセッション内容が詳細にまとめられているブログです。
S3経由でXSS!?不可思議なContent-Typeの値を利用する攻撃手法の新観点 - Flatt Security Blog
S3の脆弱な利用方法におけるセキュリティリスクについてもこちらにまとめられています。
Amazon S3の脆弱な利用によるセキュリティリスクと対策 - Flatt Security Blog
また、セッション途中でスライドが抜けているというアクシデントがありましたが、azaraさんが臨機応変に口頭説明を行っていたのが印象的でした。S3に関する各オプションについての知識がしっかり身に付いているからこそ、あの一瞬で対応出来たんだろうなと感じました。
以上、べこみんでした。